<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1.1. 更佳的 Unicode 支持（Better Unicode Support）</title>
</head>
<body>
    <!--
        ECMAScript 6 诞生之前，JavaScript 字符串（string）由 16 位编码的字符组成（UTF-16）。
        每个字符又由包含一个 16 位序列的代码单元（code unit）表示。
        所有的字符串属性和方法，例如 length 和 charAt()，都基于这些 16 位编码单元。
        曾经，16 位的容量对于任意字符的存放都是足够的，
        然而 Unicode 引入了扩展字符集（expanded character set）使得

        1.1.1. UTF-16 代码点（UTF-16 Code Points）
        限制字符的长度在 16 位以内难以满足 Unicode 意图给世界上所有字符提供全局唯一标识符的雄心壮志。
        这些全局唯一标识符，也被称为代码点，仅是从 0 开始的数字。
        字符代码（character code）可能是你所想象的那样，由一个数字（代码点）来代表一个对应的字符。
        编码一个字符就必须要将代码点转换为对应一致的代码单元。对于 UTF-16 来讲，代码点可以由多个代码单元组成。

        UTF-16 的前 216 个代码点由单个 16 位代码单元表示。这个范围被称作基本多语言面（Basic Multilingual Plane，BMP）。
        任何超出该范围的部分都是增补的语言面（supplementary plane）
        ，代码点将不能被单一的 16 位代码单元表示。为了解决这个问题，
        UTF-16 引入了代理项对（surrogate pair）来让两个 16 位代码单元表示一个代码点。
        这意味着字符既可能是包含单个代码单元的 16位 BMP 字符，
        也可能是由两个代码单元组成的位于增补语言面的 32 位字符。

        TODO: https://gitbook.dryyun.com/understandinges6-simplified-chinese/chapter_2.html#%E6%9B%B4%E4%BD%B3%E7%9A%84-unicode-%E6%94%AF%E6%8C%81%EF%BC%88better-unicode-support%EF%BC%89
        没读完，有点费劲.
    -->

</body>
</html>